애플리케이션 패칭
애플리케이션 패칭 취약점이란?
애플리케이션 패칭은 기존에 정상적인 애플리케이션을 디컴파일 후 악성코드를 삽입하는 것을 말한다. 해당 취약점이 존재 할 경우 루팅 탐지 우회, 중요 정보 탈취, 중요 인증 우회 등을 할 수 있다.
취약점 진단
패칭을 하기 위해서 우선 디컴파일링 해주어야 한다. 도구는 APK Easy Tool을 사용하였다.
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F0de85482-c105-4bc9-8ce2-427dab62a0c0%2F6c8ad883-7788-4163-aa2c-96d60bf8eb8c%2FUntitled.png?table=block&id=edffb76c-4bc2-436f-bea0-a4627757deaf&cache=v2)
디컴파일링 완료되면 smali 폴더가 생성되면서 smali 파일이 생성된다.
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F0de85482-c105-4bc9-8ce2-427dab62a0c0%2F95e3fe6d-dd21-44a3-b38e-ebf2d62f10cb%2FUntitled.png?table=block&id=d0f52851-a07a-4efe-aa80-f41f1e20fa5a&cache=v2)
smali 이란?
smali는 Dalvik 바이트 코드를 위한 어셈블리 언어이다. 안드로이드 리버싱을 할 때 사용된다. smali 파일은 재컴파일이 가능하다.
확인이 쉽게 PostLogin.smali의 Root 탐지 메시지 부분을 수정하였다.
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F0de85482-c105-4bc9-8ce2-427dab62a0c0%2F3fdfde36-f587-4297-a3d0-e612806b9be3%2FUntitled.png?table=block&id=a800e9b8-85eb-43d0-993f-66b1990cd4f0&cache=v2)
수정 후 컴파일링하여 재설치 해주었다. 성공적으로 변경 된 것을 확인 할 수 있다.
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F0de85482-c105-4bc9-8ce2-427dab62a0c0%2Fc7eb50ba-972c-4457-811d-43b3ce8f81d2%2FUntitled.png?table=block&id=2b88acc6-3dc1-4963-8f8a-78b5d1dfd903&cache=v2)
대응방안
해당 취약점은 소스코드가 난독화 되어 있지 않기 때문에 발생한다.
따라서 Android Studio에서 기본적으로 지원해 주는 난독화 도구 Proguard를 사용한다.
난독화가 되었다면 class가 아래 사진과 같이 바뀐다.
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F0de85482-c105-4bc9-8ce2-427dab62a0c0%2F6ebf9e20-04fc-4225-8b8e-883494302c8a%2FUntitled.png?table=block&id=2174c971-ca82-4af4-9e9e-aeb8c64eed28&cache=v2)